// File Name: beep_ctrl.c
// Author: kukukukuku~
// Date: 2024-06-25

#include "./User/Beep/inc/beep_ctrl.h"

uint16_t beepOnMsCnt;   //蜂鸣器打开时间计数

/**
 * @brief   Beep初始化
 * @param   None
 * @retval  None
 * @note    静态函数
*/
static void beep_init(void)
{
    gpio_init_type gpioInitStruct = 
    {
        .gpio_pins           = BEEP_GPIO_PIN,
        .gpio_out_type       = GPIO_OUTPUT_PUSH_PULL,
        .gpio_pull           = GPIO_PULL_NONE,
        .gpio_mode           = GPIO_MODE_OUTPUT,
        .gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER,
    };
    
    //Beep GPIO初始化
    crm_periph_clock_enable(BEEP_GPIO_CRM, TRUE);
    gpio_init(BEEP_GPIO_PORT, &gpioInitStruct);
    
    //Beep TMR初始化
    crm_periph_clock_enable(BEEP_TMR_CRM, TRUE);
    tmr_base_init(BEEP_TMR, BEEP_TMR_PR, BEEP_TMR_DIV);
    tmr_cnt_dir_set(BEEP_TMR, TMR_COUNT_UP);
    tmr_clock_source_div_set(BEEP_TMR, TMR_CLOCK_DIV1);
    tmr_period_buffer_enable(BEEP_TMR, TRUE);
    tmr_flag_clear(BEEP_TMR, TMR_OVF_FLAG);
    tmr_interrupt_enable(BEEP_TMR, TMR_OVF_INT, TRUE);
    tmr_counter_enable(BEEP_TMR, FALSE);
    
    //Beep NVIC初始化
    nvic_irq_enable(BEEP_TMR_IRQ, 0, 0);
}


/**
 * @brief   打开Beep
 * @param   None
 * @retval  None
 * @note    None
*/
void beep_on(void)
{
    BEEP_ENA ?\
    gpio_bits_set(BEEP_GPIO_PORT, BEEP_GPIO_PIN) :\
    gpio_bits_reset(BEEP_GPIO_PORT, BEEP_GPIO_PIN);
}


/**关闭Beep
 * @param   None
 * @retval  None
 * @note    None
*/
void beep_off(void)
{
    BEEP_DISA ?\
    gpio_bits_set(BEEP_GPIO_PORT, BEEP_GPIO_PIN) :\
    gpio_bits_reset(BEEP_GPIO_PORT, BEEP_GPIO_PIN);
}


/**
 * @brief   Beep配置
 * @param   None
 * @retval  None
 * @note    None
*/
void beep_config(void)
{
    beep_init();
    beep_off();
}
